﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Bluyel.Core
{
    /// <summary>
    /// List of availables standart types to create.
    /// </summary>
    //[Flags]
    //public enum TypeDefList
    //{
    //    None = 0,
    //    Int = 1,
    //    String = 2,
    //    Double = 4,
    //    Bool = 8,
    //    BasicType = 1 + 2 + 4 + 8,

    //    // 0x10
    //    DStruct = 0x10,

    //    // 0x20
    //    TypeClass= 0x20,

    //    // Void, Folder, List,...
    //    // TODO:

    //    // type physQty entry point, on/off and then see details?
    //    // TODO:

    //    // FFFF
    //    All = 0xFFFFFF,
    //}

    /// <summary>
    /// Type definitions.
    /// </summary>
    public class TypeDef
    {
        
        //=====================================================================
        // General internal GUID/UUID definition.

        /// The guid for the bool type.
        /// do not change it! must be always the same.
        public static string TypeBoolId = "41856A68-E9BF-11DE-8579-15C955D89593";
        public static string TypeBoolName = "Bool";

        /// The guid for the string type.
        /// do not change it! must be always the same.
        public static string TypeStringId = "BAC61247-EC7F-4b5a-8AEE-C5AB2FEE54FE";
        public static string TypeStringName = "String";

        /// The guid for the int type.
        /// do not change it! must be always the same.
        public static string TypeIntId = "8537E47A-DFE2-437b-BBDA-54008435B00C";
        public static string TypeIntName = "Int";

        /// The guid for the long type.
        /// do not change it! must be always the same.
        public static String TypeLongId = "0E9CDCA8-9812-4A7E-B7DD-6B9AE3CD8F8B";
        public static String TypeLongName = "Long";
       
        /// The guid for the double type.
        /// do not change it! must be always the same.
        public static string TypeDoubleId = "540171CD-2D77-4be6-ADC7-A44F432013CC";
        public static string TypeDoubleName = "Double";

        
        /// do not change it! must be always the same.
        public static string TypeStructId = "669A774B-639D-4469-8A3A-4906D1566ED9";
        public static string TypeStructName = "Struct";

        /// The guid for the list type.
        /// do not change it! must be always the same.
        public static string TypeListId = "E8493FD7-5745-4997-857D-E1B38D89F5DD";
        public static string TypeListName = "List";


        public static string TypeVoidId = "63F14841-9BE2-4211-BBC5-9D303CFDB144";
        public static string TypeVoidName = "Void";

        //-----------------------------
        // Physical quantity Id
        public static string TypePhyLengthId = "FAFFFD84-EC5A-480D-96CA-851401644A53";
        public static string TypePhyLengthName = "PhyLength";


        //=====================================================================

        //-----------------------------
        // list name for types for var
        public static string ListTypeVarName = "ListTypeVar";
        // list name for types for const
        public static string ListTypeConstName = "ListTypeConst";

        //-----------------------------
        // list name for var data 
        public static string ListVarDataName = "ListVarData";
        // list name for const data
        public static string ListConstDataName = "ListConstData";

        //=====================================================================

        /// <summary>
        /// default Int value.
        /// </summary>
        public static int DefValInt = 0;

        /// <summary>
        /// default String value.
        /// </summary>
        public static string DefValString = "";

        /// <summary>
        /// default Double value.
        /// </summary>
        public static double DefValDouble = 0;

        /// <summary>
        /// default Bool value.
        /// </summary>
        public static bool DefValBool = false;
    }


}
